JavaScriptCore API for Rust
This library provides a Rust API for the JavaScriptCore engine with the following goals:
- High-level API like the JavaScriptCore API for Swift
- Wrap the low-level C++ API instead of
jsc
to avoid the dependency to GTK.
Getting Started
Implementing a JavaScript runtime
Please check out PunJS for an example of how to implement a JavaScript runtime with rusty_jsc
.
Evaluating a JavaScript script
use JSContext;
let mut context = default;
let value = context.evaluate_script;
if let Some = value
Callbacks from JavaScript to Rust
use ;
use callback;
// The JavaScript code calls this Rust function.
FAQ
What about the other JavaScriptCore bindings for Rust?
The wrappers in rusty_jsc
are built against <JavaScriptCore/JavaScript.h>
header rather than the jsc
variant that requires GTK.
Why JavaScriptCore when there's already rusty_v8
?
Bun has shown that JavaScriptCore is a worthy contender to V8 on the server-side, so let's bring it over to the Rust ecosystem as well.
How were the C++ low-level bindings generated?
I first used bindgen
to do the rough conversion of JavaScript/JavaScript.h
header and then cleaned it up by hand.
The plan is to maintain the low-level bindings by hand.